STRERROR

            
#include <string.h>    требуется только для объявления функции
char *strerror(string);
char *string;           сообщение,        поставляемое пользователем
int errno;              счетчик ошибок
int sys_nerr;           счетчик сообщений системы
char sys_errlist[sys_nerr]; массив сообщений об ошибках

Описание.
Если string равна NULL , функция strerror возвращает указатель на строку, содержащую системное сообщение об ошибке для последнего библиотечного вызова, в котором выработана ошибка; эта строка оканчивается символом новой строки ('\n').
Если string не равна NULL , strerror возвращает указатель на строку, содержащую сообщение об ошибке, поставляемое пользователем; двоеточие; пробел; системное сообщение об ошибке для послед него библиотечного вызова, выработавшего ошибку; и символ новой строки ('\n'). Сообщение пользователя может иметь максимальную дли ну до 94 байта.
В отличии от perror, strerror не печатает никаких сообщений. Для печати сообщения, возвращаемого strerror в stderr , в программе должен быть оператор printf , например:

               if((access("datafile",2))++-1)
                printf(strerror(NULL));
            

Номер ошибки хранится в переменной errno , которая объявлена на внешнем уровне. Системные сообщения об ошибках доступны через переменную sys_errlist , которая является массивом сообщений для ошибок из счетчика ошибок. По функции strerror посредством использования значения errno как индекса к sys_errlist можно установить приблизительные сообщения об ошибках. Значение переменной sys_nerr определяется как максимальное число элементов в массиве sys_errlist.
Чтобы выработать правильный результат, функция strerror должна быть вызвана сразу после библиотечной процедуры, возвращающей ошибку. Иначе значение errno может быть перезаписано для последующих вызовов.

Возвращаемое значение.
Функция strerror не возвращает никакого значения.

Замечание.
В MS DOS некоторые значения errno , приведенные в <errno.h>, не используются. См. приложение А "Сообщения об ошибках", где приведен список значений errno и соответствующие сообщения об ошибках, которые применяются в MS DOS . Для любого значения errno , не используемого в MS DOS , функция strerror печатает пустую строку.

Пример.

               #include <fcntl.h>
               #include <sys\types.h>
               #include <sys\stat.h>
               #include <io.h>
               #include <stdlib.h>
            
               int fh1, fh2;
            
               fh1 = open("data1", O_RDONLY);
               if (fh1==-1)
                   strerror("open failed on input file");
            
               fh2 = open("data2", O_WRONLY : O_CREAT,
                              S_IREAD : S_IWRITE);
               if (fh2==-1)
                   srterror("open failed on output file");
            
Hosted by uCoz